#Exerccios 3 - Leitura e Manipulao de Dados
##Gustavo Agudelo. No. USP: 8893871

setwd("E:/Science/USP/Mestrado Fisiologia Geral_IB-USP/Disciplinas/Primeiro semestre_2014-1/Uso da Linguagem R para Anlise de Dados em Ecologia_2014-1/Exerccios R/Exerccios 3 - Leitura e Manipulao de Dados")

#3.1 Distncia entre cidades
cid <- c("Atenas", "Madri", "Paris", "Estocolmo")
cid
dist <- c(0, 3949, 3000, 3927, 3949, 0, 1273, 3188, 3000, 1273, 0, 1827, 3927, 3188, 1827, 0)
dist
dist.cid <- matrix(dist, ncol=4, nrow=4)
dist.cid
colnames(dist.cid) <- paste(cid)
rownames(dist.cid) <- paste(cid)
dist.cid
eurodist
##Resposta: Uma semelhana  que as duas matrizes tm os nomes das cidades nas suas linhas e nas suas colunas.
#Porm, as diferenas so que a matriz do objeto eurodist no presenta caracteres nas posies onde se encontram a mesma cidade, e a informao no fica redundante, como sim na matriz dist.cid

#3.2.1 Criao de um data frame
A <- "A"
A
B <- "B"
B
C <- "C"
C
dieta <- rep(c("A", "B", "C"), each=3, times=2)
dieta

claro <- "claro"
claro
escuro <- "escuro"
escuro
cor <- rep(c("claro", "escuro"), each=9)
cor

pesos <- c(0.1, 1.1, 3.7, 5.7, -1.2, -1.5, 3.0, -0.4, 0.6, 1.5, -0.1, 2.0, 0.6, -3.0, -0.3, -0.2, 0.3, 1.5)
pesos

hamsters <- data.frame(dieta, cor, pesos)
hamsters

#3.2.2 Sintetizando dados
media <- mean(pesos)
media
media.por.cor <- tapply(X= pesos, INDEX= cor, FUN= mean)
media.por.cor
media.por.dieta <- tapply(X= pesos, INDEX= dieta, FUN= mean)
media.por.dieta
hamsters
media.cruzada <- aggregate(hamsters$pesos, by= list(hamsters$dieta, hamsters$cor), FUN=mean)
media.cruzada

#3.3 Criando uma matriz
matriz.normal <- matrix(rnorm(15, mean = 10, sd = sqrt(3.6)), nrow=3, ncol=5)
matriz.normal
rownames(matriz.normal) <- c("L1", "L2", "L3")
colnames(matriz.normal) <- c("C1", "C2", "C3", "C4", "C5")
matriz.normal
media <- apply(X=matriz.normal,MARGIN=1,FUN=mean)
media
var <- apply(X=matriz.normal,MARGIN=1,FUN=var)
var
linha <- data.frame(media, var)
linha
media <- apply(X=matriz.normal,MARGIN=2,FUN=mean)
media
var <- apply(X=matriz.normal,MARGIN=2,FUN=var)
var
coluna <- data.frame(media, var)
coluna

#3.4 Lendo e salvando seus dados
e.grandis <- read.table(file="http://ecologia.ib.usp.br/bie5782/lib/exe/fetch.php?media=dados:egrandis.csv",header=T,sep=";", as.is=F)
e.grandis
breviarium <- summary(e.grandis)
breviarium
cont.1 <- table(e.grandis$ano)
cont.1
cont.2 <- table(e.grandis$rotacao, e.grandis$regiao)
cont.2
bofete <- e.grandis[e.grandis$regiao=="Bofete",]
bofete
write.table(bofete, file="bofete.txt", sep="\t", row.names=F)

#3.5 Classes de Objetos
iris
class(iris) #A classe deste objeto  data.frame
iris3
class(iris3) #A classe deste objeto  array
mean.iris <- aggregate(x=iris[1:4],by=list(iris$Species),FUN=mean)
mean.iris
mean.iris3 <- apply(iris3, c(2, 3), mean)
mean.iris3
rownames(mean.iris3) <- c("Spala C.", "Spala L.", "Ptala C.", "Ptala L.")
mean.iris3

#3.6 Acrescentando dados de sntese
dados.esaligna <- read.table(file="http://ecologia.ib.usp.br/bie5782/lib/exe/fetch.php?media=dados:esaligna.csv",header=T,sep=",")
dados.esaligna
str(dados.esaligna)
head(dados.esaligna)
summary(dados.esaligna)
soma.btronco.bfolha <- dados.esaligna$tronco+dados.esaligna$folha
soma.btronco.bfolha
dados.esaligna2 <- dados.esaligna
dados.esaligna2['soma.btronco.bfolha'] <- soma.btronco.bfolha
dados.esaligna2
area.basal <- pi*((dados.esaligna2$dap/2)^2)
area.basal
dados.esaligna.fin <- dados.esaligna2
dados.esaligna.fin$area.basal <- area.basal
dados.esaligna.fin
head(dados.esaligna.fin)

dados.esaligna.10cm <- dados.esaligna.fin[dados.esaligna.fin$dap>10,]
dados.esaligna.10cm
area.basal <- by(data=dados.esaligna.10cm$area.basal, INDICES=dados.esaligna.10cm$talhao, FUN=sum)
area.basal
media.area.basal <- by(data=dados.esaligna.10cm$area.basal, INDICES=dados.esaligna.10cm$talhao, FUN=mean)
media.area.basal
write.table(c(dados.esaligna.10cm, area.basal, media.area.basal), file="3.6objetos.txt", sep="\t", row.names=F)


